package com.example.controller;

import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaFoxUtil;
import cn.dev33.satoken.util.SaResult;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * 业务聚合
 *
 * @version [V2.0]
 * @package com.example.controller;
 * @description:[用一句话描述该文件做什么]
 * @author: [zhuben]
 * @date: [2024-01-25 14:44]
 * @copyright: 2024 echovin.com
 */
@Controller
public class LoginController {

    /**
     * 进入登录页面
     * @param model /
     * @return /
     */
    @GetMapping("/saLogin")
    public String saLogin(Model model) {
        model.addAttribute("cfg", null);
        return "sa-login.html";
    }

    /**
     * 登录接口
     * @param name 账号
     * @param pwd 密码
     * @return 是否登录成功
     */
    @PostMapping("/doLogin")
    @ResponseBody
    public SaResult doLogin(String name, String pwd) {

        // 参数完整性校验
        if(SaFoxUtil.isEmpty(name) || SaFoxUtil.isEmpty(pwd)) {
            return SaResult.get(500, "请输入账号和密码", null);
        }
        //TODO 查询数据库获取账户密码进行校验
        Map<String, String> userInfoMap = new HashMap<>();
        userInfoMap.put("admin", "123456");
        userInfoMap.put("0001", "123456");
        userInfoMap.put("0002", "123456");

        // 密码校验：将前端提交的 name、pwd 与配置文件中的配置项进行比对
        if(userInfoMap.containsKey(name) && pwd.equals(userInfoMap.get(name))) {
            StpUtil.login(name);
            return SaResult.get(200, "ok", StpUtil.getTokenInfo());
        } else {
            // 校验失败
            return SaResult.get(500, "账号或密码输入错误", null);
        }
    }
}
